Skip to content
掌握度

CodeAgent CLI 项目深挖 · 单期模块。总览见 需求分析 与 整体设计方案。

CDP 会话复用与安全守卫 ​

None

isolated 和 shared 模式有什么区别?登录态怎么复用? ​

isolated 是 --isolated=true,用临时 user-data-dir 起一个干净 Chromium,没 cookie、没登录态,每次用完即弃——默认、安全。shared 是 --autoConnect 或 --browser-url=:9222,连你已经开着、且允许 remote debugging 的真实 Chrome 实例,Agent 看到的是你的真实账户视图(GitHub、邮箱、内部系统)。登录态复用靠的是 chrome-devtools-mcp 连上那个已经登录好的 Chrome,CodeAgent CLI 不碰、不存 cookie。

切换模式为什么还要清 approvedAllByServer? ​

因为「全部放行」本质是信任,而信任是有作用域的。用户可能在 isolated 模式下对一个临时的干净浏览器选了「本会话全放行 chrome-devtools」,这个信任不应该延续到 shared 模式——shared 模式里 Agent 操作的是你的真实账户,风险完全不同。所以每次 switchToShared / switchToIsolated 都调 hitlHandler.clearApprovedAllForServer("chrome-devtools")(、2262),新模式下重新建立信任。

怎么保证切换过程中不会出并发问题? ​

三条防线:restartWithArgs 和 restart 都是 synchronized(、178),/browser 命令和 browser_connect 工具都走同一个 BrowserConnector 入口串行化;BrowserSession 的每个状态读写方法(mode、switchToShared、rememberNavigation、isAgentOpenedTab)都是 synchronized,避免「切换模式的瞬间另一个 ReAct turn 读状态」出现半初始化;切换失败时 restartWithArgs 会回滚到旧 args(、2246),不会把 server 卡在坏配置上。

源码锚点(读码定位用,面试不主动讲) ​

  • BrowserSession.java:18-66
  • Main.java:2211
  • McpServerManager.java:192
  • Main.java:2214

本站仅供个人学习使用,请勿外传